home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-11
/
butt01.zip
/
BUTTMAIN.INC
< prev
next >
Wrap
Text File
|
1993-01-04
|
22KB
|
618 lines
<<* ButtMain.Inc *>>
<<#
<<*===================================================================*>>
procedure ProgramBody( procfile : string )
<<*===================================================================*>>
string fuser,HighLite,Temp,box,VersionName,HotKeys
integer Tmp,Tmp2,TopRowBox,BoxWidth,CodeLines,ColOffset,RowOffset
integer WindowBot,RightMarg,MenuItems,CodeStart,ScrnOfSet
logical FoxPro
begin
VersionName := 'Button Menu Ver(1) 4/4/90 *CAB*'
lasthue := 0 <<* Color test variable *>>
<<**Start Comment**
Get User Area of Box
<Flag>;<HighLite Color>;
Example: W;GR+/N;
**End Comment**>>
select all
<<* Get window parameters from BOX *>>
SELECT FIELDS ON fldtyp = 'B'
<<* ------------------------------------------- *>>
<<* Begin test of first box object & get info *>>
<<* Assumes the first box object is the window *>>
if fldtyp <> 'B'
WAIT 'No Box defined!! Generation terminated.'
HALT
endif
if upper(left(fldusr,1))<>'W'
WAIT 'First Box is not defined with the "W" flag! Generation terminated.'
HALT
endif
TopRowBox := fldrow
WindowBot := flddec <<* rows in the window including borders *>>
fuser := fldusr
<<* Get HighLite Color from User Area *>>
HighLite := GetUser(2,fuser)
if (HighLite="") or (HighLite="MAIN") <<* get field color from box object *>>
HighLite := AtrCode( fldatr )
endif
<<* End test of first box object & get info *>>
<<* ----------------------------------------- *>>
Tmp := 1
INITMENU('[ TARGET LANGUAGE ]')
'1. FoxPro':'Generate code for FoxPro.'
'2. FoxBase+':'Generate code for FoxBase+ Version 2.1'
END
MENU TO Tmp
if Tmp = 0
HALT
endif
FoxPro := (Tmp=1)
<<* WARNING - the follwing relies on the box obj located by the code
above, so do not use a SELECT ALL between them *>>
if FoxPro
ColOffset := fldcol
RowOffset := fldrow
else
ColOffset := 0
RowOffset := 0
endif
<<* Get Field Colors and the primary row *>>
MenuItems := 0
select all
forall fields <<* Count Menu Items *>>
temp := upper(left(fldusr,1))
if (temp$'BCMOE') and (temp<>'')
MenuItems := MenuItems +1
endif
endfor
#>>
<<*
*>-------------------------------------------------------------------<*
*> ***** USER AREA FLAGS TO ACTIVATE MENU CHOICES *****
*>
*> <Type Flag>;<Hot Key Color>;<Default Value>;<Action when tagged True>
*>
*> Check Box, with a 'w/r' Hot Button color, an initial value of true,
*> and an xBase prg call.
*> C;w/r;T;DO Gc_Tag
*>
*> Button Group 1 with the 2nd button set ON
*> B1;;
*> B1;;T;
*> B1;;
*>
*> Text Button for Normal exit
*> OK;;<Exit Code>
*>
*> Text Button For Cancel Operation
*> ESC;;<Exit Code>
*>
*> Text Button for Menu Action
*> M;;<xBase Code>
*>
*>-------------------------------------------------------------------<*
*>>
#>>
<<* ====================================================================
xBASE PROGRAM START
====================================================================*>>
<<* The "program" label returns the current program filename being generated *>>
<<filespec( program,fpath,fname,fext )>>
<<*---Rebuild the program filename without the PATH---*>>
<<prgname := fname + '.' + fext>>
* Program.: {prgname}
* Author..: {Author}
* Date....: {date}
* Notice..: Copyright (c) 1990, <<gen(Rtrim(Copyright))>>, All Rights Reserved
* Notes...: Template {VersionName}
<<# pragma
if FoxPro
genln('* Notes...: Target Language is FoxPro.')
else
genln('* Notes...: Target Language is FoxBase Version 2.1 .')
endif
genln('**** Debug *****')
genln('DO set_fox')
genln('DO mis_logo')
genln('**** Debug *****')
genln('** -- Save some of the calling environment')
if FoxPro
genln('ButtSch1=SCHEME(1) && SAVE Colors [FoxPro]')
genln('ButtSch2=SCHEME(2) && SAVE Colors [FoxPro]')
else
genln('SAVE SCREEN TO ButtScrn')
genln('ButtColor=SYS(2001,"COLOR") && SAVE Colors [Fox 2.1]')
genln('Null = SYS(2002) && Turn the cursor off [Fox 2.1]')
endif
#>>
** -- Declare private variables
PRIVATE ButRef,ButtColor,ButtScrn,cnt,ColorStr,LastColor
PRIVATE Mpt,MaxMpt,SayString
DIMENSION GroupFlag({MenuItems})
** Flag Groups as follows
** Value of 1 to n = Radio Button Groups
** Value of 0 = Check Box
** Value of -1 = Proceed Text Button
** Value of -2 = Abort Text Button
** Value of -3 = Menu Choice Text Button
<<select all>>
<<tmp := 1>>
<<forall fields>> <<* Build Group Flag Array *>>
<<temp := upper(left(fldusr,1))>>
<<if (temp$'BCMOE') and (temp<>'')>>
<<gen('GroupFlag(',str(tmp,2),')=')>>
<<if temp='B'>>
<<genln(substr(fldusr,2,1),' && Button Group')>>
<<elseif temp='C'>>
<<genln('0 && Check Box')>>
<<elseif temp='O'>>
<<genln('-1 && Proceed')>>
<<elseif temp='E'>>
<<genln('-2 && ESCape')>>
<<elseif temp='M'>>
<<genln('-3 && Menu Item')>>
<<endif>>
<<tmp := tmp +1>>
<<endif>>
<<endfor>>
** Set true defaults, one per Radio Group
<<gen("IF TYPE('T_F(",MenuItems,")') # 'L' && Skip if already defined")>>
RELEASE T_F
PUBLIC T_F({MenuItems})
<<tmp := 1>>
<<SetIndent(1)>>
<<select all>>
<<forall fields>> <<* Build Array of defaults set True *>>
<<temp := upper(left(fldusr,1))>>
<<if (temp$'BCMOE') and (temp<>'')>>
<<if (temp$'BC') and (GetUser(3,fldusr)$'Tt') and not (GetUser(3,fldusr)='')>>
<<gen('T_F(',str(tmp,2),')=.T. && ')>>
<<if temp='B'>>
<<genln('Button Group ',substr(fldusr,2,1))>>
<<elseif temp='C'>>
<<genln('Check Box')>>
<<endif>>
<<endif>>
<<tmp := tmp +1>>
<<endif>>
<<endfor>>
<<RestoreIndent(1)>>
ENDIF
IF TYPE('Ky') # 'N' && Skip if already defined
RELEASE Ky
PUBLIC Ky && Returns the ASCII number of the exit key
ENDIF
DIMENSION SayAry({MenuItems}) && -- Array Used to Display Choices --
DIMENSION HotKey({MenuItems}) && -- Array Used to Display Hot Keys --
<<tmp := 1>>
<<forall fields>> <<* Build Both Arrays *>>
<<temp := upper(left(fldusr,1))>>
<<if (temp$'BCMOE') and (temp<>'')>>
<<gen('SayAry(',str(tmp,2),')=')>>
<<gen("'")>>
<<gen('@ ',str(fldrow-RowOffset,2),',',str(fldcol-ColOffset,2),' SAY ')>>
<<if (at('\<',fldlab)>0)>> <<* Hot Key Flag *>>
<<temp := stuff(fldlab,at('\<',fldlab),2,'')>>
<<gen('"',temp,'"')>>
<<genln("'")>>
<<HotKeys := HotKeys + upper(substr(fldlab,at('\<',fldlab)+2,1))>>
<<gen('HotKey(',tmp,') = "',substr(fldlab,at('\<',fldlab)+2,1))>>
<<genln(str(at('\<',fldlab)+fldcol-1-ColOffset,2),GetUser(2,fldusr),'"')>>
<<else>>
<<HotKeys := HotKeys + '.'>>
<<gen('"',fldlab,'"')>>
<<genln("'")>>
<<endif>>
<<tmp := tmp +1>>
<<endif>>
<<endfor>>
<<genln('HotKeys = "',HotKeys,'"')>>
** -- Color of Menu Choice --
DIMENSION SayColor({MenuItems})
<<tmp := 1>>
<<forall fields>>
<<temp := upper(left(fldusr,1))>>
<<if (temp$'BCMOE') and (temp<>'')>>
<<genln("SayColor(",str(tmp,2),")='",AtrCode(fldhue),"'")>>
<<tmp := tmp +1>>
<<endif>>
<<endfor>>
* --- Paints titles & borders on the screen
<<* Generate a group of SAYs for field labels and text objects *>>
<<#
forall fldlab
temp := upper(left(fldusr,1))
if (temp='' or (not temp$'BCMOE')) and not fldnap
GenColorHue <<* Test for color change *>>
if fldtyp = 'B' <<*BOX Type*>>
if FoxPro and (upper(left(fldusr,1))='W')
genln('** -- Set Size of Display Windows -- **')
gen('DEFINE WINDOW Button FROM ',fldrow,',',fldcol)
genln(' TO ',fldrow+flddec,',',fldcol+fldwid,' none')
genln('ACTIVATE WINDOW Button ')
endif
box := fldlab <<*Used to swap chars for Character box*>>
gen( '@ ',fldrow-RowOffset,',',fldcol-ColOffset,',' )
gen( fldrow+flddec-RowOffset,',',fldcol+fldwid-ColOffset,' BOX "' )
genln( substr(box,1,3),box[5],box[8],box[7],box[6],box[4],' "' )
else <<*All Fields and Text Objects*>>
genln( '@ ',str(fldrow-RowOffset,2),',',str(fldcol-ColOffset,2),' SAY "',fldlab,'"' )
endif
endif not fldnap
endfor
if FoxPro
genln('@ 0, 0 SAY CHR(254) && Close window icon')
endif
#>>
** -- Local Variables
Mpt = 1 && Menu Pointer
MptMax = {MenuItems} && Last Menu Choice
LastColor='' && Last Color Set
cnt =1
DO WHILE cnt <= MptMax && Display Menu Choices
IF GroupFlag(cnt) < 0 && Re-set text button flags
T_F(cnt) = .F.
ENDIF
IF GroupFlag(cnt) >= 0
SayAry(cnt)=STUFF(SayAry(cnt),15,1,IIF(T_F(cnt),IIF(GroupFlag(cnt)=0,'X','*'),' '))
ENDIF
<<if FoxPro>>
IF LastColor # SayColor(cnt)
SET COLOR TO &SayColor(cnt)
LastColor = SayColor(cnt)
ENDIF
&SayAry(cnt)
<<else>> <<* FoxBase will not allow arrays in macros *>>
ColorStr = SayColor(cnt)
IF LastColor # ColorStr
SET COLOR TO &ColorStr
LastColor = ColorStr
ENDIF
SayString = SayAry(cnt)
&SayString
<<endif>>
IF SUBSTR(HotKeys,cnt,1) # '.' && Display Hot Key
ColorStr = SUBSTR(HotKey(cnt),4)
SET COLOR TO &ColorStr
@ ROW(),VAL(SUBSTR(HotKey(cnt),2,2)) SAY SUBSTR(HotKey(cnt),1,1)
LastColor = ColorStr
ENDIF
cnt = cnt +1
ENDDO
DO WHILE .T.
** ---------- Display Highlite and get key press ------------
SET COLOR TO {HighLite}
<<if FoxPro>>
&SayAry(Mpt) && Display Highlite
Ky = INKEY(0,'MH') && Get Key Press ******************
SET COLOR TO &SayColor(Mpt) && Color
&SayAry(Mpt) && Turn Highlite Off
IF SUBSTR(HotKeys,Mpt,1) # '.' && Display Hot Key
ColorStr = SUBSTR(HotKey(Mpt),4)
SET COLOR TO &ColorStr
@ ROW(),VAL(SUBSTR(HotKey(Mpt),2,2)) SAY SUBSTR(HotKey(Mpt),1,1)
LastColor = ColorStr
ENDIF
IF Ky = 151 && Mouse Click, so decode
Ky = 13
DO CASE
CASE MROW() = 0 .AND. MCOL() = 0
Ky = 27 && ESCape
<<tmp := 1>>
<<SetIndent(2)>>
<<forall fields>> <<* Build Mouse Decode Logic *>>
<<temp := upper(left(fldusr,1))>>
<<if (temp$'BCMOE') and (temp<>'')>>
<<gen("CASE MROW() = ",str(fldrow-RowOffset,2)," .AND. MCOL()>= ")>>
<<gen(str(fldcol-ColOffset,2))>>
<<if '>\' $ fldlab>>
<<tmp2 := len(fldlab)-2>>
<<else>>
<<tmp2 := len(fldlab)>>
<<endif>>
<<genln(" .AND. MCOL() <= ",str(fldcol+tmp2-ColOffset,2))>>
<<genln(' Mpt = ',tmp)>>
<<tmp := tmp +1>>
<<endif>>
<<endfor>>
<<RestoreIndent(2)>>
OTHERWISE
LOOP
ENDCASE
ENDIF Ky = 151 && Mouse Click
<<else>>
SayString = SayAry(Mpt)
&SayString && Display Highlite
Ky = INKEY(0) && Get Key Press ******************
ColorStr = SayColor(Mpt) && Color
SET COLOR TO &ColorStr
&SayString && Turn Highlite Off
IF SUBSTR(HotKeys,Mpt,1) # '.' && Display Hot Key
ColorStr = SUBSTR(HotKey(Mpt),4)
SET COLOR TO &ColorStr
@ ROW(),VAL(SUBSTR(HotKey(Mpt),2,2)) SAY SUBSTR(HotKey(Mpt),1,1)
LastColor = ColorStr
ENDIF
<<endif>>
** -- Test for Hot Key --
IF Ky > 32 .AND. Ky < 127 && ASCII key pressed
IF Ky > 96
Ky = Ky -32 && Convert to Upper Case
ENDIF
IF CHR(Ky) $ HotKeys && Hot Key found
Mpt = AT(CHR(Ky),HotKeys)
Ky =32
ENDIF
ENDIF
** ---------------- Process KEY strokes ---------------------
DO CASE
CASE Ky=5.OR.Ky=56.OR.Ky=19.OR.Ky=52 && [Up] [Left]
Mpt = IIF(Mpt=1,MptMax,Mpt-1)
CASE Ky=24.OR.Ky=50.OR.Ky=4.OR.Ky=54 && [Down] [Right]
Mpt = IIF(Mpt=MptMax,1,Mpt+1)
CASE Ky = 9 && Tab to next group
cnt = Mpt
ButRef = GroupFlag(Mpt)
DO WHILE cnt <= MptMax
IF GroupFlag(cnt) # ButRef
Mpt = cnt
EXIT
ENDIF
cnt = cnt +1
ENDDO
Mpt = IIF(cnt>MptMax,1,Mpt)
CASE Ky = 15 && Shift Tab prev group
cnt = Mpt
ButRef = GroupFlag(Mpt)
DO WHILE cnt >= 1
IF GroupFlag(cnt) # ButRef
Mpt = cnt
EXIT
ENDIF
cnt = cnt -1
ENDDO
Mpt = IIF(cnt<1,MptMax,Mpt)
CASE Ky = 27 && ESCape
<<select all>>
<<tmp := 1>>
<<SetIndent(2)>>
<<forall fields>>
<<temp := upper(left(fldusr,1))>>
<<if (temp$'BCMOE') and (temp<>'')>> <<* loop all to keep counter correct *>>
<<if (temp='E')>>
<<genln('T_F(',tmp,') = .T.')>>
<<CodeLines := HowMany(';',fldusr)-1>> <<* 1st two are flags *>>
<<if (CodeLines>0) and (len(GetUser(3,fldusr))>0)>>
<<CodeStart := 3>>
<<while CodeLines > 0>> <<* Gen xBase Code Lines *>>
<<genln(' ',GetUser(CodeStart,fldusr))>>
<<CodeStart := CodeStart +1>>
<<CodeLines := CodeLines -1>>
<<end>>
<<endif>>
<<endif>>
<<tmp := tmp +1>>
<<endif>>
<<endfor>>
<<RestoreIndent(2)>>
EXIT && -- MENU Exit to abort
CASE Ky = 23 .OR. Ky = 10 && Ctrl-End or Ctrl-Enter
Ky = 10 && Force to Ctrl-Enter code
<<select all>>
<<tmp := 1>>
<<SetIndent(2)>>
<<forall fields>>
<<temp := upper(left(fldusr,1))>>
<<if (temp$'BCMOE') and (temp<>'')>> <<* loop all to keep counter correct *>>
<<if (temp='O')>>
<<genln('T_F(',tmp,') = .T.')>>
<<CodeLines := HowMany(';',fldusr)-1>> <<* 1st two are flags *>>
<<if (CodeLines>0) and (len(GetUser(3,fldusr))>0)>>
<<CodeStart := 3>>
<<while CodeLines > 0>> <<* Gen xBase Code Lines *>>
<<genln(' ',GetUser(CodeStart,fldusr))>>
<<CodeStart := CodeStart +1>>
<<CodeLines := CodeLines -1>>
<<end>>
<<endif>>
<<endif>>
<<tmp := tmp +1>>
<<endif>>
<<endfor>>
<<RestoreIndent(2)>>
EXIT && -- MENU Exit to proceed
CASE Ky=28.OR.Ky=72.OR.Ky=104 && [F1] [Hh] Help
** put up the window
SET COLOR TO RB+/N
<<if FoxPro>>
DEFINE WINDOW ButHelp FROM 2,10 TO 20,68 ;
TITLE '[ Control Panel Help ]' DOUBLE ;
COLOR G+/N,RB+/N,RB+/N
ACTIVATE WINDOW ButHelp
<<ScrnOfSet := 2>>
<<else>>
SAVE SCREEN TO F1Screen
@ 6,10,21,66 BOX '╔═╗║╝═╚║ '
@ 6,27 SAY '[ Control Panel Help ]'
<<ScrnOfSet := 12>>
<<endif>>
@ ROW()+1,{ScrnOfSet} SAY 'The following keys are active while using this panel.'
@ ROW()+1,{ScrnOfSet} SAY '--------KEY------ACTION------------------------------'
@ ROW()+1,{ScrnOfSet} SAY ' [Enter] Select the item highlighted.'
@ ROW()+1,{ScrnOfSet} SAY ' [Space] Select the item highlighted.'
@ ROW()+1,{ScrnOfSet} SAY '[Ctrl][Enter] Exit the menu and proceed.'
@ ROW()+1,{ScrnOfSet} SAY ' [Ctrl][End] Exit the menu and proceed.'
@ ROW()+1,{ScrnOfSet} SAY ' [ESC] Exit without selecting.'
@ ROW()+1,{ScrnOfSet} SAY ' [Arrows] Up/Down, move the highlighted item.'
@ ROW()+1,{ScrnOfSet} SAY ' [Arrows] Right/Left, move the highlighted item.'
@ ROW()+1,{ScrnOfSet} SAY ' [Tab] Move Highlight forward one group'
@ ROW()+1,{ScrnOfSet} SAY ' [Shift][Tab] Move Highlight back one group'
@ ROW()+1,{ScrnOfSet} SAY ' [Home] Go to the first item.'
@ ROW()+1,{ScrnOfSet} SAY ' [End] Go to the last item.'
@ ROW()+1,{ScrnOfSet} SAY ' [F1] Displays this screen.'
@ ROW()+1,{ScrnOfSet}+14 SAY '<Press Any Key To Return>'
<<if FoxPro>>
cnt=INKEY(0,'HM')
RELEASE WINDOWS ButHelp
ACTIVATE WINDOW Button
<<else>>
cnt=INKEY(0) && wait for key press
RESTORE SCREEN FROM F1Screen
<<endif>>
CASE Ky = 1 .OR. Ky = 55 && Home
Mpt = 1
CASE Ky = 6 .OR. Ky = 49 && End
Mpt = MptMax
CASE Ky = 13 .OR. Ky = 32 && ENTER or SPACE
IF GroupFlag(Mpt) >= 0 && Is Button or Check Box
** No action if Button is ON
IF GroupFlag(Mpt) = 0 .OR. .NOT. T_F(Mpt)
DO CASE && Tag Action Initiated Here
<<* Action that cause a prg call or other xBase code, Radio & Check Only *>>
<<select all>>
<<tmp := 1>>
<<SetIndent(4)>>
<<forall fields>>
<<temp := upper(left(fldusr,1))>>
<<if (temp$'BCMOE') and (temp<>'')>> <<* loop all to keep counter correct *>>
<<if (temp$'BC')>>
<<CodeLines := HowMany(';',fldusr) -2>> <<* 1st 3 are flags *>>
<<if (CodeLines>0) and (len(GetUser(4,fldusr))>0)>>
<<genln('CASE Mpt=',tmp)>>
<<if not FoxPro>>
<<genln(' SAVE SCREEN TO ButScrn')>>
<<endif>>
<<CodeStart := 4>>
<<while CodeLines > 0>>
<<genln(' ',GetUser(CodeStart,fldusr))>>
<<CodeStart := CodeStart +1>>
<<CodeLines := CodeLines -1>>
<<end>>
<<if FoxPro>>
<<genln(' ACTIVATE WINDOW Button')>>
<<else>>
<<genln(' RESTORE SCREEN FROM ButScrn')>>
<<endif>>
<<endif>>
<<endif>>
<<tmp := tmp +1>>
<<endif>>
<<endfor>>
<<RestoreIndent(4)>>
ENDCASE
** Set True / False Flag
T_F(Mpt) = IIF(GroupFlag(Mpt)#0,.T.,.NOT.T_F(Mpt))
** Set display of button On or Off
SayAry(Mpt)=STUFF(SayAry(Mpt),15,1,IIF(T_F(Mpt),IIF(GroupFlag(Mpt)=0,'X','*'),' '))
** If Button, Need to clear all buttons in this group
IF GroupFlag(Mpt) # 0 && Ignore if Check Box
ButRef= GroupFlag(Mpt) && Button Reference
cnt =1
DO WHILE cnt <= MptMax
IF GroupFlag(cnt) = ButRef && Button group match
IF cnt # Mpt && Clear Button
T_F(cnt) = .F.
SayAry(cnt)=STUFF(SayAry(cnt),15,1,' ')
ENDIF
ColorStr = SayColor(cnt)
IF LastColor # ColorStr
SET COLOR TO &ColorStr
LastColor = ColorStr
ENDIF
SayString = LEFT(SayAry(cnt),15)+'"'
&SayString && Display Menu Choice
ENDIF
cnt = cnt +1
ENDDO
ENDIF
ENDIF
ELSE && EXIT or Menu Choice
DO CASE
<<select all>>
<<tmp := 1>>
<<SetIndent(3)>>
<<forall fields>>
<<temp := upper(left(fldusr,1))>>
<<if (temp$'BCMOE') and (temp<>'')>>
<<if temp='O'>>
<<genln('CASE GroupFlag(Mpt) = -1')>>
<<genln(' KEYBOARD CHR(10)')>>
<<elseif temp='E'>>
<<genln('CASE GroupFlag(Mpt) = -2')>>
<<genln(' KEYBOARD CHR(27)')>>
<<elseif temp='M'>>
<<CodeLines := HowMany(';',fldusr)-1>> <<* 1st 2 are flags *>>
<<if (CodeLines>0) and (len(GetUser(3,fldusr))>0)>>
<<genln('CASE Mpt=',tmp)>>
<<if not FoxPro>>
<<genln(' SAVE SCREEN TO ButScrn')>>
<<endif>>
<<CodeStart := 3>>
<<while CodeLines > 0>>
<<genln(' ',GetUser(CodeStart,fldusr))>>
<<CodeStart := CodeStart +1>>
<<CodeLines := CodeLines -1>>
<<end>>
<<if FoxPro>>
<<genln(' ACTIVATE WINDOW Button')>>
<<else>>
<<genln(' RESTORE SCREEN FROM ButScrn')>>
<<endif>>
<<endif>>
<<endif>>
<<tmp := tmp +1>>
<<endif>>
<<endfor>>
<<RestoreIndent(3)>>
ENDCASE
ENDIF
ENDCASE
ENDDO && ------------------ Main Loop ---------------------------
* ---Closing operations.
<<#
if FoxPro
genln('RELEASE WINDOW Button')
genln('SET COLOR OF SCHEME 1 TO &ButtSch1 && Restore Colors [FoxPro]')
genln('SET COLOR OF SCHEME 2 TO &ButtSch2 && Restore Colors [FoxPro]')
else
genln('SET COLOR TO &ButtColor')
genln('RESTORE SCREEN FROM ButtScrn')
genln('Null = SYS(2002,1) && Turn the cursor on [Fox 2.1]')
endif
#>>
RETURN
* EOF: {prgname}
<<end>> <<*ProgramBody*>>
<<* ButtMAIN.INC *>>